#!/bin/bash
if ! command -v go &> /dev/null; then
    echo "开始下载 Go 1.18"
    arch=$(uname -m)
    if [[ $arch == "x86_64" ]]; then
    # 下载 x86_64 架构的 Go 安装包
       wget http://10.75.2.14:8089//group1/default/20230513/15/48/2/go1.18.linux-amd64.tar.gz
    elif [[ $arch == "armv7l" || $arch == "aarch64" ]]; then
    # 下载 ARM 架构的 Go 安装包
       wget http://10.75.2.14:8089//group1/default/20230513/15/48/2/go1.18.10.linux-arm64.tar.gz
    else
       echo "不支持的架构：$arch"
    exit 1
    fi
    echo "Go 下载完成"
    echo "开始解压 Go 1.18"
    sudo tar -C /usr/local -xzf go1.18*.tar.gz
    echo "Go 解压完成"
    echo "开始更新环境变量"
    sudo sh -c 'echo "export PATH=\$PATH:/usr/local/go/bin" >> /etc/profile'
    sleep 5
    source /etc/profile
    source ~/.bashrc   # 加载 .bashrc 文件中的环境变量
    echo "环境变量更新成功"
    source /etc/profile
if [ "$(go version | awk '{print $3}')" = "go1.18" ]; then
  echo "安装成功"
else
  echo "安装失败"
  exit 1
fi
    echo "Go 环境安装完成"
else
    echo "发现 Go 环境，跳过安装"
fi

# 判断目录 /home/www 是否存在，存在则删除
if [ -d /home/www ]; then
    echo "目录 /home/www 已存在，删除该目录"
    rm -rf /home/www
fi

echo "开始创建目录 /home/www"
mkdir /home/www
echo "创建目录 /home/www 完成"

echo "切换到 /home/www 目录"
cd /home/www

echo "开始创建 any_api_server.go 文件并写入代码"
cat << 'EOF' > any_api_server.go
package main

import (
        "github.com/gin-gonic/gin"
)

func main() {
        // 创建 Gin 引擎
        router := gin.Default()

        // 定义处理函数
        router.Any("/", func(c *gin.Context) {
                c.JSON(200, gin.H{
                        "code": "200",
                })
        })

        // 启动服务器
        router.Run(":80")
}
EOF
echo "any_api_server.go 文件创建并写入代码完成"

echo "开始执行 go mod init api_server.go"
go mod init api_server.go
echo "go mod init api_server.go 执行完成"

echo "开始配置 GOPROXY 环境变量为 https://goproxy.cn"
go env -w GOPROXY=https://goproxy.cn
echo "GOPROXY 环境变量配置完成"

echo "开始安装依赖包 github.com/gin-gonic/gin"
go get -u github.com/gin-gonic/gin
while [ ! -f ~/go/pkg/mod/github.com/gin-gonic/gin*/go.mod ]; do sleep 1; done
echo "依赖包 github.com/gin-gonic/gin 安装完成"

echo "开始编译 any_api_server.go 程序"
go build -o any_api_server any_api_server.go
echo "编译 any_api_server.go 程序完成"
echo "检查端口 80 是否被占用"
if lsof -Pi :80 -sTCP:LISTEN -t >/dev/null ; then
    echo "端口 80 已被占用，杀掉占用该端口的进程"
    kill $(lsof -t -i:80)
    echo "占用端口 80 的进程已被杀掉"
fi
ps -ef | grep any_api_server | grep -v grep | awk '{print $2}' | xargs kill

echo "启动 any_api_server 服务"
./any_api_server &
echo "any_api_server 服务已启动"
